
package combat.example.protocol.interfaces;

import java.util.ArrayList;

import combat.example.protocol.data.PhysicalObject;
import combat.example.server.protocol.implementation.Team;


/**
 * @author Laurens Andriessen
 * @version 1.0
 */
public interface SimulationInt {

	static Boolean isRunning = false;
	public Boolean getIsRunning();
	public void setIsRunning(Boolean isRunning);

	static Double simSpeed = 0.0;
	public Double getSimSpeed();
	public void setSimSpeed(Double simSpeed);

	static ArrayList<PhysicalObject> simPhysicalObjects = null;
	public ArrayList<PhysicalObject> getSimPhysicalObjects();
	public void setSimPhysicalObjects(ArrayList<PhysicalObject> simPhysicalObjects);

	static ArrayList<Team> teams = null;
	public ArrayList<Team> getTeams();
	public void setTeams(ArrayList<Team> teams);
	// Helpers
	public void addTeam(Team team);
	public void removeTeam(int teamID);

	// ------------------------------------------

	public void startSimulation();
	public void stopSimulation();
	public void pauseSimulation();

	/**
	 * The very first command the client sends to the server for authentication.
	 * @param userName As given in the GUI of the client-login-screen
	 * @return The userID by which this client will be known (generated by the
	 *         server)
	 */
	public int userLogOn(String userName);

	public ArrayList<PhysicalObject> update(int clientID);

}
